package fun.sssdnsy.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor;

/**
 * @Desc 继承InstantiationAwareBeanPostProcessorAdapter的类
 * @Since 2023-02-24
 */
public class MyInstantiationAwareBeanPostProcessor implements SmartInstantiationAwareBeanPostProcessor {

    public MyInstantiationAwareBeanPostProcessor() {
        super();
        System.out.println("这是InstantiationAwareBeanPostProcessorAdapter实现类构造器！！");
    }

    // 接口方法、实例化Bean之前调用
    @Override
    public Object postProcessBeforeInstantiation(Class beanClass,
                                                 String beanName) throws BeansException {
        System.out.println("InstantiationAwareBeanPostProcessor调用postProcessBeforeInstantiation方法");
        return null;
    }

    // 接口方法、实例化Bean之后调用
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        System.out.println("InstantiationAwareBeanPostProcessor调用postProcessAfterInitialization方法");
        return bean;
    }

    // 接口方法、设置某个属性时调用
//    @Override
//    public PropertyValues postProcessPropertyValues(PropertyValues pvs,
//                                                    PropertyDescriptor[] pds, Object bean, String beanName)
//            throws BeansException {
//        System.out
//                .println("InstantiationAwareBeanPostProcessor调用postProcessPropertyValues方法");
//        return pvs;
//    }


}
